package com.idanchuang.support.etcache.remote.codec;

import com.idanchuang.support.etcache.remote.RemoteKey;

/**
 * 针对 RemoteKey 对象的编解码器, 一个服务中只会有一个 RemoteKeyCodec
 *
 * RemoteKeyCodec 与 RemoteCodec 的区别:
 * 1. RemoteCodec负责对原始缓存Key对象的编解码, RemoteKeyCodec负责对RemoteKey对象的编解码 (RemoteKey包装了原始Key的编码数据)
 * 2. 每个缓存对象可以指定自己的RemoteCodec, 但是不能指定 RemoteKeyCodec
 *
 * @author yjy
 * Created at 2021/12/21 1:51 下午
 */
public interface RemoteKeyCodec {

    /**
     * 编码
     * @param key ..
     * @return ..
     */
    byte[] encode(RemoteKey key);

    /**
     * 解码
     * @param bytes ..
     * @return ..
     */
    RemoteKey decode(byte[] bytes);


}
